home *** CD-ROM | disk | FTP | other *** search
/ The Utilities Experience / The Utilities Experience - Volume 1.iso / software / icons+tools / iconian / sources / emodules / mod / logoreq.e < prev    next >
Text File  |  1995-12-22  |  3KB  |  110 lines

  1. OPT MODULE
  2.  
  3. MODULE    'intuition/intuition','intuition/imageclass','intuition/screens'
  4. MODULE    'gadtools','libraries/gadtools'
  5. MODULE    'graphics/text'
  6. MODULE    'utility/tagitem'
  7. MODULE    'exec/ports'
  8. MODULE    'graphics/rastport'
  9.  
  10. MODULE    'mod/fonts'
  11. MODULE    'mod/gadgets'
  12. MODULE    'mod/compare'
  13. MODULE    'mod/macros'
  14.  
  15. EXPORT PROC logowindow(windowtitle,text,logo:PTR TO image,buttontext,textfont:PTR TO textfont,textstyle,textattr,screen:PTR TO screen,drawinfo:PTR TO drawinfo,rast,visual)
  16.     DEF str[2500]:STRING
  17.     DEF strs[75]:LIST
  18.     DEF i,t
  19.     DEF fontw=0,fonth=0,dumw,dumh,totalh=0
  20.     DEF win:PTR TO window
  21.     DEF okgad=0:PTR TO gadget
  22.     DEF tmp,gad
  23.     DEF okw,okh
  24.     DEF windoww,windowh
  25.     DEF picked,code,iadd,class,qual
  26.     DEF mes:PTR TO intuimessage
  27.  
  28.     StrCopy(str,text,ALL)
  29.  
  30.     t:=0
  31.     strs[0]:=str
  32.     FOR i:=1 TO StrLen(text)
  33.         IF (Char(str+i)=10)
  34.             t:=t+1
  35.             strs[t]:=str+i+1
  36.             PutChar(str+i,0)
  37.         ENDIF
  38.     ENDFOR
  39.     FOR i:=0 TO t
  40.         dumw,dumh:=fontsize2(rast,strs[i],textfont,textstyle)
  41.         fontw:=bigger(fontw,dumw)
  42.         fonth:=bigger(fonth,dumh)
  43.     ENDFOR
  44.     fontw:=fontw+16
  45.     okw,okh:=fontsize2(rast,buttontext,textfont,textstyle)
  46.     totalh:=fonth*(t+1)+8
  47.     windoww:=bigger(logo.width,fontw+16)+26
  48.     windowh:=logo.height+totalh+okh+28
  49.  
  50.     IF (gad:=CreateContext({tmp}))
  51.         okgad,gad:=createbool(gad,screen.wborleft+(windoww/2)-(okw/2)-24,logo.height+totalh+18+screen.wbortop+screen.font.ysize,okw+48,okh+8,6453,buttontext,textattr,visual)
  52.         win:=OpenWindowTagList(0,
  53.              [WA_CUSTOMSCREEN,screen,
  54.                 WA_LEFT,screen.mousex-(windoww/2)-(okw/2),
  55.                 WA_TOP,screen.mousey-(windowh)-(okh/2),
  56.                 WA_INNERWIDTH,windoww,
  57.                 WA_INNERHEIGHT,windowh,
  58.                 WA_AUTOADJUST,TRUE,
  59.                 WA_CUSTOMSCREEN,screen,
  60.                 WA_DEPTHGADGET,TRUE,
  61.                 WA_ACTIVATE,TRUE,
  62.                 WA_DRAGBAR,TRUE,
  63.                 WA_SMARTREFRESH,TRUE,
  64.                 WA_IDCMP,BUTTONIDCMP,
  65.                 WA_GADGETS,okgad,
  66.                 WA_TITLE,windowtitle,
  67.                 TAG_END])
  68.         IF (win)
  69.             SetAPen(win.rport,drawinfo.pens[SHINEPEN])
  70.             SetBPen(win.rport,drawinfo.pens[BACKGROUNDPEN])
  71.             setafpt(win.rport,[%1010101010101010,%0101010101010101]:INT,1)
  72.             SetDrMd(win.rport,RP_JAM2)
  73.             RectFill(win.rport,win.borderleft,win.bordertop,rightedge(win)-1,bottomedge(win)-1)
  74.             setafpt(win.rport,0,0)
  75.  
  76.             drawbevelbox(visual,win.rport,win.borderleft+(windoww/2)-(logo.width/2)-2,win.bordertop+4,logo.width+4,logo.height+2,1,TRUE,0)
  77.             drawbevelbox(visual,win.rport,win.borderleft+(windoww/2)-(fontw/2)-7,win.bordertop+logo.height+10,fontw+12,totalh+4,1,TRUE,0)
  78.             DrawImageState(win.rport,logo,win.borderleft+(windoww/2)-(logo.width/2),win.bordertop+5,IDS_NORMAL,drawinfo)
  79.             dumh:=win.bordertop+logo.height+15
  80.             RefreshGList(okgad,win,0,-1)
  81.             FOR i:=0 TO t
  82.                 SetFont(win.rport,textfont)
  83.                 SetAPen(win.rport,drawinfo.pens[TEXTPEN])
  84.                 Move(win.rport,win.borderleft+(windoww/2)-(fontsize2(rast,strs[i],textfont,textstyle)/2),dumh+textfont.baseline)
  85.                 Text(win.rport,strs[i],StrLen(strs[i]))
  86.                 dumh:=dumh+fonth
  87.             ENDFOR
  88.             dumw:=0
  89.             REPEAT
  90.                 IF mes:=Gt_GetIMsg(win.userport)
  91.                     class,iadd,code:=extractmessage(mes)
  92.                     qual:=mes.qualifier
  93.                     IF (class=IDCMP_GADGETUP)
  94.                         picked:=code
  95.                     ENDIF
  96.                     IF class=IDCMP_REFRESHWINDOW
  97.                         Gt_BeginRefresh(win)
  98.                         Gt_EndRefresh(win,TRUE)
  99.                     ENDIF
  100.                     Gt_ReplyIMsg(mes)
  101.                 ELSE
  102.                     Wait(Shl(1,win.userport::mp.sigbit))
  103.                 ENDIF
  104.           UNTIL (picked)
  105.             CloseWindow(win)
  106.             FreeGadgets(tmp)
  107.         ENDIF
  108.     ENDIF
  109. ENDPROC
  110.